fix(files): decrement quota by actual bytes written in stream_write#55731
Merged
fix(files): decrement quota by actual bytes written in stream_write#55731
Conversation
The quota is now decremented by the actual number of bytes written ($written) rather than the intended size. This ensures quota tracking stays accurate even if fwrite writes fewer (or more - i.e. from underlying buffering/etc) bytes than requested. Signed-off-by: Josh <josh.t.richards@gmail.com>
provokateurin
approved these changes
Oct 14, 2025
CarlSchwan
approved these changes
Oct 14, 2025
Merged
joshtrichards
added a commit
that referenced
this pull request
Jan 10, 2026
Refactors Quota stream logic so that quota is only decremented when writes grow the file, not on overwrites, reads, or seeks. This ensures quota enforcement is robust and matches expected storage semantics. Adds extra safety checks after writing to prevent quota drift. Follow-up to #55731 Signed-off-by: Josh <josh.t.richards@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Discovered while investigating random failures in the
QuotaTestunit test.The problem:
$sizeis set to the length of$dataafter truncation.$this->limit) is decremented by$sizebefore the actual write.fwrite(), which may be more or less than$size.If
fwrite()writes fewer bytes than$size(e.g., disk full), the quota will still be reduced by$size, not the actual number written.Similarly, if it writes more (for example, if the underlying buffer had data in it), the returned value will be higher than expected.
The fix:
$written) rather than the intended size.fwritewrites fewer (or more, due to underlying buffering) bytes than requested.TODO
Checklist
3. to review, feature component)stable32)